package com.shuqi.common.utils;

import java.io.File;
import java.io.FilenameFilter;

public class FileUtils {
    /**
     * 递归删除目录下的所有文件及子目录下所有文件
     * 
     * @param dir 将要删除的文件目录
     * @return boolean Returns "true" if all deletions were successful. If a deletion fails, the
     *         method stops attempting to delete and returns "false".
     */
    public static boolean deleteDir(File file) {
        return deleteDir(file, null);
    }

    /**
     * 递归删除目录下的所有文件及子目录下所有文件
     * 
     * @param dir 将要删除的文件目录
     * @return boolean Returns "true" if all deletions were successful. If a deletion fails, the
     *         method stops attempting to delete and returns "false".
     */
    public static boolean deleteDir(File file, FilenameFilter filter) {
        if (!file.exists())
            return false;

        if (file.isDirectory()) {
            String[] children = file.list(filter);
            // 递归删除目录中的子目录下
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(file, children[i]), filter);
                if (!success)
                    return false;
            }
        }
        // 目录此时为空，可以删除
        return file.delete();
    }
}
